草庐IT

Android Looper 与 BlockingQueue?

全部标签

Java BlockingQueue take() 与 poll()

在无限循环中使用队列中的值时——什么会更有效:1)阻塞队列直到通过take()获得一个值while(value=queue.take()){doSomething(value);}2)hibernaten毫秒并检查项目是否可用while(true){if((value=queue.poll())!=null){doSomething(value);}Thread.sleep(1000);} 最佳答案 阻止可能更有效。在后台,如果没有可用的元素,最初调用take()的线程会进入休眠状态,让其他线程做他们需要做的任何事情。将元素添加到队

Java BlockingQueue take() 与 poll()

在无限循环中使用队列中的值时——什么会更有效:1)阻塞队列直到通过take()获得一个值while(value=queue.take()){doSomething(value);}2)hibernaten毫秒并检查项目是否可用while(true){if((value=queue.poll())!=null){doSomething(value);}Thread.sleep(1000);} 最佳答案 阻止可能更有效。在后台,如果没有可用的元素,最初调用take()的线程会进入休眠状态,让其他线程做他们需要做的任何事情。将元素添加到队

java - BlockingQueue - 阻塞的 drainTo() 方法

BlockingQueue有一个叫做drainTo()的方法,但它没有被阻塞。我需要一个我想要阻止但也能够以单一方法检索排队对象的队列。Objectfirst=blockingQueue.take();if(blockingQueue.size()>0)blockingQueue.drainTo(list);我想上面的代码可以工作,但我正在寻找一个优雅的解决方案。 最佳答案 您指的是JavaDoc中的评论吗?:Further,thebehaviorofthisoperationisundefinedifthespecifiedcol

java - BlockingQueue - 阻塞的 drainTo() 方法

BlockingQueue有一个叫做drainTo()的方法,但它没有被阻塞。我需要一个我想要阻止但也能够以单一方法检索排队对象的队列。Objectfirst=blockingQueue.take();if(blockingQueue.size()>0)blockingQueue.drainTo(list);我想上面的代码可以工作,但我正在寻找一个优雅的解决方案。 最佳答案 您指的是JavaDoc中的评论吗?:Further,thebehaviorofthisoperationisundefinedifthespecifiedcol

java BlockingQueue 没有阻塞窥视?

我有一个阻塞的对象队列。我想写一个线程阻塞直到队列中有一个对象。类似于BlockingQueue.take()提供的功能。但是,由于我不知道我是否能够成功处理该对象,所以我只想peek()而不是删除该对象。只有当我能够成功处理它时,我才想删除它。所以,我想要一个阻塞peek()函数。目前,根据javadocs,如果队列为空,peek()只会返回。我错过了什么吗?还有其他方法可以实现此功能吗?编辑:如果我只是使用线程安全队列并偷看和sleep,有什么想法吗?publicvoidrun(){while(!exit){while(queue.size()!=0){Objecto=queue.

java BlockingQueue 没有阻塞窥视?

我有一个阻塞的对象队列。我想写一个线程阻塞直到队列中有一个对象。类似于BlockingQueue.take()提供的功能。但是,由于我不知道我是否能够成功处理该对象,所以我只想peek()而不是删除该对象。只有当我能够成功处理它时,我才想删除它。所以,我想要一个阻塞peek()函数。目前,根据javadocs,如果队列为空,peek()只会返回。我错过了什么吗?还有其他方法可以实现此功能吗?编辑:如果我只是使用线程安全队列并偷看和sleep,有什么想法吗?publicvoidrun(){while(!exit){while(queue.size()!=0){Objecto=queue.

java - BlockingQueue 和 TransferQueue 的区别

对于BlockingQueue/LinkedBlockingQueue与来自jsr166y和java7的新TransferQueue/LinkedTransferQueue类型之间的区别我有点困惑 最佳答案 来自TransferQueueJavaDocs:ABlockingQueueinwhichproducersmaywaitforconsumerstoreceiveelements.ATransferQueuemaybeusefulforexampleinmessagepassingapplicationsinwhichprod

java - BlockingQueue 和 TransferQueue 的区别

对于BlockingQueue/LinkedBlockingQueue与来自jsr166y和java7的新TransferQueue/LinkedTransferQueue类型之间的区别我有点困惑 最佳答案 来自TransferQueueJavaDocs:ABlockingQueueinwhichproducersmaywaitforconsumerstoreceiveelements.ATransferQueuemaybeusefulforexampleinmessagepassingapplicationsinwhichprod

java - 如何中断BlockingQueue?

BlockingQueue.put可以抛出InterruptedException。如何通过抛出此异常来导致队列中断?ArrayBlockingQueuequeue=newArrayBlockingQueue(NUMBER_OF_MEMBERS);...try{queue.put(param);}catch(InterruptedExceptione){Log.w(TAG,"putInterrupted",e);}...//howcanIqueue.notify? 最佳答案 您需要中断调用queue.put(...);的线程.put

java - 使用 BlockingQueue 下载 PDF 文件

我正在尝试使用URLConnection下载pdf文件。以下是我设置连接对象的方式。URLserverUrl=newURL(url);urlConnection=(HttpURLConnection)serverUrl.openConnection();urlConnection.setDoInput(true);urlConnection.setRequestMethod("GET");urlConnection.setRequestProperty("Content-Type","application/pdf");urlConnection.setRequestProperty(